package com.example.service;

import com.example.model.Product;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Date;
import java.util.List;
import java.util.Optional;

/**
 * 商品服务层接口
 * 仅操作MongoDB
 */
public interface ProductService {
    
    /**
     * 保存商品信息
     */
    Product saveProduct(Product product);
    
    /**
     * 根据ID查找商品
     */
    Optional<Product> findById(String id);
    
    /**
     * 获取所有商品（分页）
     */
    Page<Product> findAllProducts(Pageable pageable);
    
    /**
     * 根据商品名称查找商品
     */
    List<Product> findByProductName(String productName);
    
    /**
     * 根据商品编号查找商品
     */
    Product findByProductCode(String productCode);
    
    /**
     * 根据价格范围查找商品
     */
    List<Product> findByPriceRange(double minPrice, double maxPrice);
    
    /**
     * 根据生产日期范围查找商品
     */
    List<Product> findByProductionDateRange(Date startDate, Date endDate);
    
    /**
     * 根据生产厂家查找商品
     */
    List<Product> findByManufacturer(String manufacturer);
    
    /**
     * 更新商品信息
     */
    Product updateProduct(Product product);
    
    /**
     * 删除商品信息
     */
    void deleteProduct(String id);
    
    /**
     * 统计商品总数
     */
    long countProducts();
}
